import process from 'node:process';
import {URL, fileURLToPath} from 'node:url';
import {defineConfig, loadEnv} from 'vite';
import {setupVitePlugins} from './build/plugins';
import {getBuildTime} from './build/config';

export default defineConfig(configEnv => {
    const viteEnv = loadEnv(configEnv.mode, process.cwd()) as unknown as Env.ImportMeta;
    const buildTime = getBuildTime();
    return {
        base: viteEnv.VITE_BASE_URL,
        resolve: {
            alias: {
                '~': fileURLToPath(new URL('./', import.meta.url)),
                '@': fileURLToPath(new URL('./src', import.meta.url))
            }
        },
        css: {
            preprocessorOptions: {
                scss: {
                    additionalData: `@use "./src/styles/scss/global.scss" as *;`
                }
            }
        },
        optimizeDeps: {
            exclude: [".vite"],
        },
        plugins: setupVitePlugins(viteEnv, buildTime, configEnv.mode),
        define: {
            BUILD_TIME: JSON.stringify(buildTime)
        },
        server: {
            host: '0.0.0.0',
            port: 9527,
            open: true,
            proxy: {
                '/proxy-default': {
                    target: 'https://mock.apifox.cn/m1/3109515-0-default',
                    changeOrigin: true,
                    rewrite: path => path.replace(/^\/proxy-default/, '')
                },
                '/api': {
                    // target: 'https://zeuspre.xmtuanyi.com',
                    target: 'http://121.40.95.119:8082',
                    changeOrigin: true
                }
            },
            fs: {
                cachedChecks: false
            }
        },
        preview: {
            port: 9725
        },
        build: {
            reportCompressedSize: false,
            sourcemap: viteEnv.VITE_SOURCE_MAP === 'Y',
            commonjsOptions: {
                ignoreTryCatch: false
            }
        }
    };
});
